package com.liuyz;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@SuppressWarnings({"all"})
public class Collections_ {

    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("abb");
        list.add("abc");
        list.add("deff");
        list.add("deffff");
        list.add("abb");

        // 反转元素
        Collections.reverse(list);
        System.out.println(list);

        // 随机排序
        Collections.shuffle(list);
        System.out.println(list);

        // 调用元素对象运行类型的类信息的compareTo方法进行自然排序
        Collections.sort(list);
        System.out.println(list);

        // 自定义比较类进行排序
        Collections.sort(list, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o2).length() - ((String) o1).length();
            }
        });
        System.out.println(list);

        // 指定集合中的两个元素进行交换位置
        Collections.swap(list, 0, 2);
        System.out.println(list);

        // 调用元素对象运行类型的类信息的compareTo方法进行自然排序，获取最大值
        System.out.println(Collections.max(list));

        // 自定义比较类进行排序，获取最大值
        System.out.println(Collections.max(list, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        }));

        // 调用元素对象运行类型的类信息的compareTo方法进行自然排序，获取最小值
        System.out.println(Collections.min(list));

        // 自定义比较类进行排序，获取最小值
        System.out.println(Collections.min(list, new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        }));

        // 返回指定元素在集合中出现的次数
        System.out.println(Collections.frequency(list, "abb"));

        // 将src中的内容复制到dest中（需要先将dest集合进行数据内容的初始化才行）
        ArrayList dest = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            dest.add("");
        }
        Collections.copy(dest, list);
        System.out.println(dest);

        // 使用新对象替换集合中的某个对象的所有内容
        Collections.replaceAll(list, "abb", "ABB");
        System.out.println(list);
    }
}
